Data may be stored in many types of storage mechanisms, such as databases and file servers. Each storage mechanism typically has its own means of access. For example, the SQL protocol is typically used to perform operations on a database, and the NFS protocol is typically used to perform operations on a file system. The SQL protocol is an ANSI standard for accessing and manipulating data stored in a database. The NFS protocol is a distributed file system protocol that supports the performance of file operations on files across a network. NFS is a well-known standard for sharing files between UNIX hosts.
In the NFS protocol, file operations are performed on files using a filehandle, which is an identifier that identifies a particular resource. The current version of NFS, version 4, which is specified in RFC 3010, supports additional functionality over version 3, such as enhancements to security and to the performance of stateful operations.
It is desirable to access as many kinds of data as possible from a single storage mechanism. For example, minimizing of the number of different types of storage mechanisms that are used to store and access data tends to reduce the amount of resources required to maintain the storage mechanisms. Also, accessing as many kinds of data as possible from a central location, such as a database, promotes ease of use and security, as data need not be accessed from a plurality of mechanisms that each enforce different security policies. Consequently, performing file operations upon as many files as possible through a database management system is desirable.
Approaches for accessing data items using the NFS protocol in a database management system are disclosed in U.S. patent application Ser. No. 11/014,354. According to these approaches, files may be stored in a repository maintained by a database server. Clients may perform file operations on files, stored in a repository implemented by a database, by communicating with a database server using the NFS protocol.
It is desirable to provide an access mechanism capable of responding to a request for the performance of a file operation, issued by a client, in a manner that is both scalable and highly available to a large number of clients.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.